package com.chen.androidstudy.activity

import android.graphics.Color
import android.os.Build
import android.view.Window
import androidx.core.view.WindowCompat
import com.base.library.base.BaseVM
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

/**
 *
 * @Author:        CHong
 * @CreateDate:    2024/6/7 0007
 * @Description:
 */
@HiltViewModel
class ImmersionViewModel @Inject constructor() : BaseVM() {

    override fun initData() {

    }

    fun setImmersion(window: Window) {
        //沉浸式原本的意思似乎是指全屏吧。。。算了，不管那么多，喊习惯了 沉浸式状态栏，就这么称呼吧。
        //在activity 的oncreate里调用
//将decorView的fitSystemWindows属性设置为false
        WindowCompat.setDecorFitsSystemWindows(window, false)
//设置状态栏颜色为透明
        window.statusBarColor = Color.TRANSPARENT
//是否需要改变状态栏上的 图标、字体 的颜色
//获取InsetsController
        val insetsController = WindowCompat.getInsetsController(window, window.decorView)
//mask：遮罩 默认是false
//mask = true 状态栏字体颜色为黑色，一般在状态栏下面的背景色为浅色时使用
//mask = false 状态栏字体颜色为白色，一般在状态栏下面的背景色为深色时使用
        var mask = true
        insetsController.isAppearanceLightStatusBars = mask
//底部导航栏是否需要修改
//android Q+ 去掉虚拟导航键 的灰色半透明遮罩
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            window.isNavigationBarContrastEnforced = false
        }
//设置虚拟导航键的 背景色为透明
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            //8.0+ 虚拟导航键图标颜色可以修改，所以背景可以用透明
            window.navigationBarColor = Color.TRANSPARENT
        } else {
            //低版本因为导航键图标颜色无法修改，建议用黑色，不要透明
            window.navigationBarColor = Color.BLACK
        }
//是否需要修改导航键的颜色，mask 同上面状态栏的一样
        insetsController.isAppearanceLightNavigationBars = mask

        //修改 状态栏 、 虚拟导航键 的图标颜色，可以在任意需要的时候设置，防止图标和字体颜色和背景色一致导致看不清

//        补充一下：
//        状态栏和虚拟导航栏的背景色要注意以下问题：
//        1.在低于6.0的手机上，状态栏上的图标、字体颜色是白色且不支持修改的，MIUI，Flyme这些除外，因为它们有自己的api能实现修改颜色
//        2.在低于8.0的手机上，虚拟导航栏的图标、字体颜色是白色且不支持修改的，MIUI，Flyme这些除外，因为他们有自己的api能实现修改颜色
//        解决方案：
//        低于指定版本的系统上，对应的颜色就不要用透明，除非你的APP页面是深色背景，否则，建议采用半透明的灰色
//
//        在带有刘海或者挖孔屏上，横屏时刘海或者挖孔的那条边会有黑边，解决方法是：
//        给APP的主题v27加上
//        <item name ="android:windowLayoutInDisplayCutoutMode">shortEdges</item>

    }
}